//利用arguments，你可以获得调用者传入的所有参数。也就是说，即使函数不定义任何参数，还是可以拿到参数的值：
function a(x){
    console.log('x='+x);
    for(var i=0;i<arguments.length;i++){
        console.log('arg'+i+'='+arguments[i]);
    }
}
a(10,20,30);
function aaa(a,b){
    if(arguments[1]=undefined){
    var b=3.14;
    }
    else{
        return a*a*b;
    }
}

if (aaa(2) === 12.56 && aaa(2, 3.1416) === 12.5664) {
    console.log('测试通过');
} else {
    console.log('测试失败');
}

function max(a,b){
    if(a>b){
        return a;
    }else{
        return b;
    }
}
console.log(max(5,10));

//rest参数只能写在最后，前面用...标识，从运行结果可知，传入的参数先绑定a、b，多余的参数以数组形式交给变量rest，所以，不再需要arguments我们就获取了全部参数。

//如果传入的参数连正常定义的参数都没填满，也不要紧，rest参数会接收一个空数组（注意不是undefined）。
function aas(a,b,...rest){
    console.log('a='+a);
    console.log('b='+b);
    console.log(rest);
}

aas(1,2,3,4,5);
aas(1);